<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    const data = [
      { id: "01", name: "张大大", pid: "", job: "项目经理" },
      { id: "02", name: "小亮", pid: "01", job: "产品leader" }
    ]

    // 完成代码
    function arrToTree(data) {
      // 最终需要返回的数组，格式化以后的树行数组
      const treeData = []

      data.forEach(item => {
        // 先判断是否是顶级
        if (!item.pid) {
          // 如果是顶级，就需要将 item 直接 push 到 treeData 中
          treeData.push(item)
        }

        //  当前 item 的 id 和每一项的 pid 进行对比，查找子节点
        const children = data.filter(data => data.pid === item.id)

        // 如果 children 长度为0，说明没有子节点，没有子节点没必要添加 children
        // if (children.length === 0) return
        if (!children.length) return

        // 如果存在 子节点，就需要给 item 进行添加 children 属性
        item.children = children
      })

      return treeData
    }

    const res = arrToTree(data)
    console.log(res)
  </script>
</body>

</html>